// vim:sw=4:ai:aw
#pragma once
#ifndef	__Main_h__
#define	__Main_h__

#ident	"@(#)Main.h	1.2	AKK/CII	20090222"

// STL includes
#include <list>		// STL list container
using std::list;

// eigen includes
#include "Area.h"	// class Area
#include "Allocator.h"	// baseclass Allocator


// Even wat handige afkortingen ...
typedef	list<Area*>		AreaList;	// een Arealist container
typedef	AreaList::iterator	ALIterator;	// een AreaListIterator


//
// De namaak applicatie/tester/meter
//
class	Main
{
    private:
	Allocator	* beheerder;	// huidige beheers module
	int	 	  size;		// de omvang van het fiktieve geheugen
	AreaList	  objecten;	// lijst van de gekregen gebieden
	    // PAS OP: Anders dan in het C++ diktaat is dit GEEN ''pointer naar''
	    // 	   maar een "automatisch" gecreeerd object.
	bool	   	  tflag;	// true als we code willen "testen"
					// anders gaan we "meten".

    public:
	Main( Allocator * beheerder, int size );
	~Main();

	void	setTesten()	{ tflag = true;  }
	void	setMeten()	{ tflag = false; }

	void	testing();
	void	randomscenario( int aantal );

	void	vraagGeheugen( int omvang );
	void	vergeetOudste();
};

#endif	/*Main_h*/
